package com.zyb.ext.transaction.service.impl;

import com.zyb.ext.transaction.service.UserService;
import com.zyb.ext.transaction.annotation.MyTransactionAnnotation;
import com.zyb.ext.transaction.dao.UserDao;
import com.zyb.ext.transaction.transaction.TransactionUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
@Slf4j
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;

    @Autowired
    private TransactionUtils transactionUtils;

    //编程式事务测试
//    public void add() {
//        try {
//            log.info("编程式事务，开启事务");
//            transactionUtils.begin();
//            userDao.add("zyb one", 20);
//             int w = 1 / 0;
//            userDao.add("zyb two", 22);
//            log.info("编程式事务，提交事务");
//            transactionUtils.commit();
//        } catch (Exception e) {
//            log.info("编程式事务，出现异常，回滚事务");
//            transactionUtils.rollback();
//        }
//    }

    //声明式事务测试
//    public void add() {
//        userDao.add("zyb one", 20);
//        int w = 1 / 0;
//        userDao.add("zyb two", 22);
//    }

    //注解声明式事务测试
    @MyTransactionAnnotation
    public void add() {
        userDao.add("zyb one", 20);
//        int w = 1 / 0;
        userDao.add("zyb two", 22);
    }
}
